//#########################################################################
//                              WackiEngie
//           Copyright (c) 2014 Marc Wacker. All rights reserved.
//#########################################################################

#pragma once

//include "WeCorePrerequisites.h"
#include "WeInputTypes.h"
#include "WeEvent.h"

namespace WackiEngine
{

	// represents any input device (mouse, keyboard, gamepad etc..)
	class InputDeviceHandler
	{
	public:
		// triggered when a key is pressed
		// parameters: deviceIndex and a KeyCode
		Event<void(uint32, KeyCode)> keyDown;

		// triggered when a key is released, same parameters as above
		Event<void(uint32, KeyCode)> keyUp;

		// triggered when an axis is moved
		// parameters are: deviceIndex, axis state, and axis identifier
		Event<void(uint32, float, KeyCode)> axisMoved;

		// generate events here if necessary
		virtual void update() {}

	};

}